package ObjectFn4;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;

import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
import static jdk.nashorn.internal.objects.Global.print;

public class test1 {
    public static void main(String[] args) throws CloneNotSupportedException, ParseException {
//        student s =   new student("你好，技能");
//        System.out.println(s);
//        System.out.println();
//        student s2 = (student) s.clone();
//        System.out.println(s2);
//        System.out.println(s2==s);
//        System.out.println(s.toString());

//        student s2 =   new student("你好，技能2");
//        System.out.println(s.equals(s2));
//        boolean equals = Objects.equals(s, s2);
//        System.out.println(equals);
//        String myString = "He?of myString is " + cls.getName());
//        String s1 = null;
//        String s2 = "你好";
//        System.out.println(nonNull(s1));
//        System.out.println(Objects.nonNull(s2));
//        String i = "99.5";
//        double s1 = Double.parseDouble(i);
//        double s1 = Double.valueOf(i);
//        System.out.println(s1+1); // 2
        // 目标：掌握BigDecimal进行精确运算的方案。
//        double a = 0.1;
//        double b = 0.2;
//
//        // 1、把浮点型数据封装成BigDecimal对象，再来参与运算。
//        // a、public BigDecimal(double val) 得到的BigDecimal对象是无法精确计算浮点型数据的。 注意：不推荐使用这个，
//        // b、public BigDecimal(String val)  得到的BigDecimal对象是可以精确计算浮点型数据的。 可以使用。
//        // c、public static BigDecimal valueOf(double val): 通过这个静态方法得到的BigDecimal对象是可以精确运算的。是最好的方案。
//        BigDecimal a1 = BigDecimal.valueOf(a);
//        BigDecimal b1 = BigDecimal.valueOf(b);
//
//        // 2、public BigDecimal add(BigDecimal augend): 加法
//        BigDecimal c1 = a1.add(b1);
//        System.out.println(c1);
//
//        // 3、public BigDecimal subtract(BigDecimal augend): 减法
//        BigDecimal c2 = a1.subtract(b1);
//        System.out.println(c2);
//
//        // 4、public BigDecimal multiply(BigDecimal augend): 乘法
//        BigDecimal c3 = a1.multiply(b1);
//        System.out.println(c3);
//
//        // 5、public BigDecimal divide(BigDecimal b): 除法
//        BigDecimal c4 = a1.divide(b1);
//        System.out.println(c4);
//
////        BigDecimal d1 = BigDecimal.valueOf(0.1);
////        BigDecimal d2 = BigDecimal.valueOf(0.3);
////        BigDecimal d3 = d1.divide(d2);
////        System.out.println(d3);
//
//        // 6、public BigDecimal divide(另一个BigDecimal对象，精确几位，舍入模式) : 除法，可以设置精确几位。
//        BigDecimal d1 = BigDecimal.valueOf(0.1);
//        BigDecimal d2 = BigDecimal.valueOf(0.3);
//        BigDecimal d3 = d1.divide(d2,  2, RoundingMode.HALF_UP); // 0.33
//        System.out.println(d3);
//
//        // 7、public double doubleValue() : 把BigDecimal对象又转换成double类型的数据。
//        //print(d3);
//        //print(c1);
//        double db1 = d3.doubleValue();
//        double db2 = c1.doubleValue();
//        print(db1);
//        print(db2);
        // 目标：掌握SimpleDateFormat的使用。
        // 1、准备一些时间
        Date d = new Date();
        System.out.println(d);

        long time = d.getTime();
        System.out.println(time);

        // 2、格式化日期对象，和时间 毫秒值。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");

        String rs = sdf.format(d); // 格式化时间
        String rs2 = sdf.format(time); // 格式化时间戳
        System.out.println(rs);
        System.out.println(rs2);
        System.out.println("-------------------------------------------------------------------");

        // 目标：掌握SimpleDateFormat解析字符串时间 成为日期对象。
        String dateStr = "2022-12-12 12:12:11";
        // 1、创建简单日期格式化对象 , 指定的时间格式必须与被解析的时间格式一模一样，否则程序会出bug.
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d2 = sdf2.parse(dateStr);
        System.out.println(d2);

    }
}
